#include<stdio.h>
#include<stdlib.h>
#include<string.h>
#include"gestion_personnel.h"
/**************************************************************************/
int nombre_personnel(char chemin[])
{
FILE *f ;
int c;
int nLignes = 0;

f=fopen(chemin,"r");

while((c=fgetc(f)) != EOF)
{
	if(c=='\n')
		nLignes++;
}
return(nLignes);
fclose(f);
}


/**************************************************************************/


void saisir_personnel(personnel *p)
{
    printf("\nDonner les informations concernant le personnel à ajouter :\n");
	printf("\nIdentifiant:\t"); fflush(stdin);  scanf("%d",&(*p).id);
        printf("\nNom:\t"); fflush(stdin); scanf("%s",(*p).nom);
        printf("\nPrenom:\t"); fflush(stdin);  scanf("%s",(*p).prenom);
	printf("\nNationalité:\t"); fflush(stdin); scanf("%s",(*p).nat);
	printf("\nCIN:\t"); fflush(stdin); scanf("%ld",&(*p).cin);
	do{printf("\nAge:\t"); fflush(stdin); scanf("%d",&(*p).age);}while((*p).age<18 || (*p).age>100);
	do{printf("\nFonction (infirmier/medecin/administrateur):\t"); fflush(stdin); scanf("%s",(*p).fonction);}while(strcmp((*p).fonction,"infirmier")!=0 && strcmp((*p).fonction,"medecin")!=0 && strcmp((*p).fonction,"administrateur")!=0);
	printf("\nMot de passe:\t"); fflush(stdin); scanf("%s",(*p).mp);


}



/**************************************************************************/

int existe(int iden,char chemin[])
{int v=0;
int i=0;
char nom[10],prenom[10],mp[20],fonction[20],nat[20];
int age,id;
long int cin;
FILE *f;


f=fopen("personnel.txt","r");

while(i<nombre_personnel("personnel.txt") && v==0)
	{
  		fscanf(f,"%d %s %s %s %ld %d %s %s",&id,nom,prenom,nat,&cin,&age,fonction,mp);
  		if (iden==id) v=1;
		i++;
	}
return(v);


}


/**************************************************************************/


void ajouter_personnel(personnel *p)
{ FILE *f;
   
	f=fopen("personnel.txt","a");

	saisir_personnel(p);
	

	if (existe((*p).id,"personnel.txt")) printf("\n\t!! Un personnel ayand l'identifiant %d est déja existant\n",(*p).id);

	else fprintf(f,"%d \t %s \t %s \t %s \t %ld \t %d \t %s \t %s \n",(*p).id,(*p).nom,(*p).prenom,(*p).nat,(*p).cin,(*p).age,(*p).fonction,(*p).mp);
	
	
	fclose(f);
}

/**************************************************************************/

void verifier_personnel()

{int iden;
FILE *f;
f=fopen("personnel.txt","r");
int v=0,i=0;
char nom[10],prenom[10],mp[20],fonction[20],nat[20];
int age,id;
long int cin;



	printf("\nDonner l'identifiant du personnel à verifier :\t");
	fflush(stdin);
	scanf("%d",&iden);
	

	
	

if(existe(iden,"personnel.txt")==1) printf("\nLe personnel ayant l'identifiant '%d' est enregistré dans la base de données de la clinique\n",iden);
else printf("\nLe Personnel ayant l'identifiant '%d'  n'est pas enregistré dans la base de données de la clinique\n ",iden);

}

/**************************************************************************/


void modifier_personnel()
{ int iden;
  FILE *f;
  FILE *g;
  personnel *p;
  char nom[20],pren[20],nat[20],fonction[20],mp[20];
  long int cin;
  int age,id;
  int i=0;
  p=malloc(sizeof(personnel));
 
 printf("\nDonnez l'identifiant du personnel à modifier :\t ");
 scanf("%d",&iden);
if(existe(iden,"personnel.txt")==0) printf("\nCet identifiant n'appartient à aucun personnel\n ");
else 
{
 
 f=fopen("personnel.txt","r");
 g=fopen("new.txt","w");
 

 
 
while (i<nombre_personnel("personnel.txt") )
    {
     fscanf(f, "%d %s %s %s %ld %d %s %s",&id,nom,pren,nat,&cin,&age,fonction,mp);
     if (id==iden)
	  {
	  saisir_personnel(p);
          fprintf(g, "%d\t%s\t%s\t%s\t%ld\t%d\t%s\t%s\n",(*p).id,(*p).nom,(*p).prenom,(*p).nat,(*p).cin,(*p).age,(*p).fonction,(*p).mp);}
     else
          fprintf(g, "%d\t%s\t%s\t%s\t%ld\t%d\t%s\t%s\n",id,nom,pren,nat,cin,age,fonction,mp);
	i++;
	
    }



  

fclose(f);
fclose(g);  
remove("personnel.txt");
rename("new.txt","personnel.txt");
 }


}

/**************************************************************************/

void supprimer_personnel()
{ int iden;
  FILE *f;
  FILE *g;
  personnel *p;
  char nom[20],pren[20],nat[20],fonction[20],mp[20];
  long int cin;
  int age,id;
  int i=0;
  p=malloc(sizeof(personnel));
 printf("\nDonnez l'identifiant du personnel à supprimer :\t ");
 scanf("%d",&iden);
if(existe(iden,"personnel.txt")==0) printf("\nCet identifiant n'appartient à aucun personnel\n ");
else 
{
 
 f=fopen("personnel.txt","r");
 g=fopen("new.txt","w");
 

 
 
while (i<nombre_personnel("personnel.txt") )
    {
     fscanf(f, "%d %s %s %s %ld %d %s %s",&id,nom,pren,nat,&cin,&age,fonction,mp);
     if (id!=iden)
	  
	  fprintf(g, "%d\t%s\t%s\t%s\t%ld\t%d\t%s\t%s\n",id,nom,pren,nat,cin,age,fonction,mp);
          
     
          
	i++;
	
   }



  

fclose(f);
fclose(g);  
remove("personnel.txt");
rename("new.txt","personnel.txt");
 }


}

/**************************************************************************/

void afficher_personnel()
{ int iden;
  FILE *f;
  personnel T[1000];
  int v=0,i=0;
char nom[10],prenom[10],mp[20],fonction[20],nat[20];
int age,id;
long int cin;

 printf("\nDonnez l'identifiant du personnel à afficher :\t ");
 scanf("%d",&iden);

if (existe(iden,"personnel.txt")==0) printf("\nCet identifiant n'appartient à aucun personnel\n");
else{

f=fopen("personnel.txt","r");

 

 
 
while(i < nombre_personnel("personnel.txt") && v==0)
  {fscanf(f,"%d %s %s %s %ld %d %s %s",&id,nom,prenom,nat,&cin,&age,fonction,mp); 
if (id!=iden)   
	{printf("\n\nID:%d\t\tNom:%s\t\tPrenom:%s\t\tNationalité:%s\t\tCIN:%ld\t\tAge:%d\t\tFonction:%s\t\tPass:%s\n",id,nom,prenom,nat,cin,age,fonction,mp);
	 v=1;}
    i++;
  }
}


}
/**************************************************************************/

void afficher_tout_personnel()
{ FILE *f;
 int i=0;
char nom[10],prenom[10],mp[20],fonction[20],nat[20];
int age,id;
long int cin;

f=fopen("personnel.txt","r");
while(i < nombre_personnel("personnel.txt") )
  {fscanf(f,"%d %s %s %s %ld %d %s %s",&id,nom,prenom,nat,&cin,&age,fonction,mp);    
   printf("\n\nID:%d\t\tNom:%s\t\tPrenom:%s\t\tNationalité:%s\t\tCIN:%ld\t\tAge:%d\t\tFonction:%s\t\tPass:%s\n",id,nom,prenom,nat,cin,age,fonction,mp);
   i++;
  }
}











	


